#ifndef CAPPACKSERVICE_H
#define CAPPACKSERVICE_H
#include <string>
#include "pcap.h"
#include "Pacap/PackType.h"

class CapPackService
{
public:
    CapPackService()=default;
    virtual ~CapPackService()=default;

    void start();



//    void typedef void (*GetCaputerHander)(u_char *user,const struct pcap_pkthdr *h,const u_char *bytes);
    /**
     * @brief getData  抓包之后的回调函数
     * @param userArg
     * @param h
     * @param bytes
     * @param unitTest  是否进行单元测试。true 的话就不会发送到消息系统,写日志，打印到终端。
     */
    static void getData( u_char* userArg, const struct pcap_pkthdr *h,const u_char *bytes );
protected:
    //获取应用层数据
    static PackType getApplication( const PackType& data );

    //获取解析单个数据包的 json对象
    static std::string getJSONData( const PackType& appdata );

    //获取所有的包的 json 数组
    static std::string getJSONArray( const PackType& appdatas );

};

#endif // CAPPACKSERVICE_H
